The present disclosure relates generally to software development tools for code generation and more particularly to compiling code for execution on a machine configured for Single Instruction Multiple Data (SIMD) execution.
SIMD configured computers include multiple processing elements that perform the same operation on multiple data points simultaneously. SIMD processing elements are typically used to add or multiply sets of numbers at the same time for multimedia encoding and rendering as well as scientific applications. Implementing an algorithm with SIMD instructions, without compiler support, may require the user to be aware of restrictions on data alignment, architecture specific instruction sets and SIMD register sizes. Compilers may allow the user to exploit the speed of the SIMD processing elements by generating SIMD-enabled code from a user's scalar code.